import sys
def palabra_valida(palabra):
    ii= 0
    if palabra == "":
        return False
    while ii < len(palabra):
        caracter = palabra[ii]
        ii += 1
        if caracter < "A":
            return False
        if caracter > "z":
            return False
        if caracter > "Z"and caracter < "a":
            return False
    return True
acu = 0
cont = 0
buenos = 0
malos = 0
def guardar(palabra,cant_por_ano, ano_inicio):
    global acu
    global cont
    global buenos
    global malos
    if acu > 10000 and palabra_valida(palabra):
        buenos += 1
        if cont%100 == 0:
            print cont, palabra, acu
        cont+=1
        out.write(palabra + "\t" + str(ano_inicio))
        ultimo_ano = ano_inicio-1
        for x in cant_por_ano:
            out.write("\t" + str(x))
            ultimo_ano +=1
            if ultimo_ano >= 2008:
                break

        while ultimo_ano != 2008:
            out.write("\t0")
            ultimo_ano +=1
        out.write("\n")
    else:
        malos += 1
if len(sys.argv) < 2:
    print "faltan los argumentos, primero la cantidad de gramas y despues los nombres de los archivos"

out = open("ngrams.out","a")
for x in range(1,len(sys.argv)):
    f = open(sys.argv[x],"r")
    ss = f.read()
    
    ultima_palabra = ""
    ano_inicial = 0
    cant_por_ano = []
    i = 0
    
    while(i < len(ss)):
        s= ""
        while(ss[i] != "\n"):
            s += ss[i]
            i+=1
        i+=1
        ll = s.split("\t")
        if ll[0] != ultima_palabra:

            guardar(ultima_palabra,cant_por_ano,ano_inicial)
            acu = 0
            ultima_palabra = ll[0]
            ano_inicial = int(ll[1])
            cant_por_ano = [int(ll[2])]
        else:
            ulti_ano = ano_inicial + len(cant_por_ano) -1
            actual = int(ll[1])
            if(ulti_ano!= actual -1):
                ano_inicial = actual
                cant_por_ano = []
                acu = 0
            cant_por_ano.append(int(ll[2]))
            acu += int(ll[2])
    print buenos, malos
